
import time
import routers
from concurrent import futures

import grpc
# 引入路由模块，用来注册gRPC路由
from depend.pbs.facebe import facebe_pb2, facebe_pb2_grpc
from enums import APP_NAME
from tools import log
from tools.enum import GetEnvValue
# 根据路由模块，初始化 proto 文件并生成 python 文件
from tools.grpc import InitProtoFile, Servicer


def rpcserver():
    # 创建一个grpc服务器，最大工作线程数为10
    server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
    # 将Servicer类添加到grpc服务器中
    facebe_pb2_grpc.add_ServiceServicer_to_server(Servicer(facebe_pb2)(), server)
    # 添加一个不安全的端口，端口号为环境变量GRPC_PORT的值
    server.add_insecure_port(f"""[::]:{GetEnvValue("GRPC_PORT")}""")
    # 启动grpc服务器
    server.start()
    # 打印服务器启动成功的日志
    log.success(f"""Secure gRPC server started at port {GetEnvValue("GRPC_PORT")}""")
    # 无限循环，每隔24小时休眠一次
    try:
        while True:
            time.sleep(60 * 60 * 24)
    # 捕获键盘中断信号，停止服务器
    except KeyboardInterrupt:
        server.stop(0)


if __name__ == '__main__':
    # 初始化 proto 文件并生成 python 文件
    InitProtoFile()
    log.primary(f"服务[{APP_NAME}]")
    log.primary(f"运行环境[{GetEnvValue()}]")
    rpcserver()

